import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import '@/icons' // icon
import '@/permission' // permission control

// mixin全局混入写法
import myMixin from '@/mixin'
Vue.mixin(myMixin)
// console.log(process.env.VUE_APP_BASE_API)
// console.log(process.env.port)
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
// if (process.env.NODE_ENV === 'production') {
//   const { mockXHR } = require('../mock')
//   mockXHR()
// }

// i18n国际化插件的安装使用
// 引入库
// import VueI18n from 'vue-i18n'
// // 引入element自带的语言库
// import elementZH from 'element-ui/lib/locale/lang/zh-CN'
// import elementEN from 'element-ui/lib/locale/lang/en'
// // vue插件安装
// Vue.use(VueI18n)
// // 创建实例
// const i18n = new VueI18n({
//   locale: 'zh',
//   messages: {
//     zh: {
//       goodday: '祝你开心',
//       ...elementZH
//     },
//     en: {
//       goodday: 'Wish you happy every day',
//       ...elementEN
//     }
//   }
// })
// 在下面挂载

import i18n from '@/i18n'
// set ElementUI lang to EN
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value)
})
// 如果想要中文版 element-ui，按如下方式声明
// Vue.use(ElementUI)

Vue.config.productionTip = false
// 自定义属性,解决请求数据图片错误设置默认图片,fiximg是定义属性名字
// 配置对象在directive/fiximg.js
import fiximg from '@/directive/fiximg.js'
Vue.directive('fiximg', fiximg)
// 全局组件注册方法
// import PageTools from '@/components/PageTools'
// Vue.component('PageTools', PageTools)
import Component from '@/components'
Vue.use(Component) // 注册自己的插件

// 批量注册过滤器的方法
// 1.将一个文件里面的所有函数全部引入
import * as myFilters from '@/filters'
// 2.forin循环遍历对象的key,逐个进行注册
for (const key in myFilters) {
  Vue.filter(key, myFilters[key])
}

new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})
